Ray-tracing may be used to render images by tracing a path of light in a virtual environment and simulating the effects of the light's encounters with virtual objects. Various applications of ray-tracing technology may include simulating a variety of optical effects—such as shadows, reflections and refractions, scattering phenomenon, and dispersion phenomenon (such as chromatic aberration). With respect to rendering soft shadows using ray-tracing, conventional approaches typically use a technique referred to as stochastic ray-tracing, in which ray-traced view vectors and shadow rays are cast in a virtual environment to sample lighting conditions a pixel. The lighting conditions may be combined and applied to the pixel in an image. To conserve computing resources and rendering times, the rays may be sparsely sampled, resulting in a noisy render. The noisy render may then be filtered to reduce noise and produce a final render that approximates a render of a fully-sampled scene.
In order for the final render to accurately portray lighting conditions in the virtual environment after filtering, conventional approaches require a large number of ray-traced samples (e.g., hundreds if not thousands of samples or more) for each pixel. Due to the large number of samples, the computational resources used for rendering the virtual environment may impose too great of a delay for real-time rendering applications, such as gaming. In one such approach, a complex frequency space analysis is performed for the pixel to determine an isotropic filter kernel that is computed under various assumptions about the characteristics of the virtual environment. Examples of such assumptions are that each light source acts like a rectangular light source, and that each light source is always parallel to the receiver plane. However, when the assumptions are incorrect the dimensions (e.g., size, shape, orientation) and the weights of the filter kernel do not accurately reflect the spatial characteristics of the virtual environment which may cause over-blurring of the image as well as an unrealistic blur pattern.